Workflow applications are related to businesses, governments, and other organizations where information and work product flows between various persons or departments. Workflow generally is the flow of information and control in such organizations. In a business setting, workflow processes include sales and order processing, purchasing tasks, inventory control and management, manufacturing and production control, shipping and receiving, accounts payable, and the like. Businesses continually strive to define, document, and streamline such processes in order to effectively compete.
Computer systems and associated software now provide tools with which businesses and other organizations can improve workflow. Software tools can be used to model business workflow processes or schedules and identify inefficiencies and possible improvements. In addition, where a process involves exchanging data between people, departments, plants, or even between separate companies, computer systems and networks can be used to implement such exchanges. These systems and software tools are further able to implement large-scale computations and other data or information processing which typically are associated with business related information. Automation of such information processing has led to many efficiency improvements in the modem business world; and workflow management includes effective management of information flow and control in an organization's business processes. Automation of workflow management is now allowing businesses and other organizations to further improve performance by executing workflow transactions in computer systems, including global computer networks, such as the Internet.
Workflow applications can be of particular utility in processing business transactions between different companies. In a typical application, two companies having a buyer-seller relationship can desire to automate generation and processing of purchase orders, product shipments, billing, and collections. Automating such processes can result in significant efficiency improvements. However, this inter-company application of workflow technology requires co-operation of the companies and proper interfacing of the individual company's existing computer systems. Thus far, workflow application tools have been developed which provide some capability for automating business workflow by defining workflow applications.
Many business transactions are of a short duration. A transaction is normally viewed as an atomic consistency-preserving state update. Atomic database transactions have this characteristic along with the guarantee that in case of any failure during the transactional update the partial update will be rolled back and its effects erased. For example, a buyer can wish to transmit a purchase order number along with a list of products being purchased to a seller, and the seller can wish to respond with a confirmation of the order and an expected shipment date. This type of transaction can involve a general consumer purchasing products from a retailer, or alternatively two large corporate entities which do business regularly. The data associated with the order and the confirmation can be relatively small and the transmission time for the data can be on the order of fractions of a second.
A workflow application running in a computer system can allocate system resources to the transaction during its pendency, which is generally very short—i.e. has a small latency. In this scenario, the system would use a conventional database transaction, e.g., an ACID transaction—ACID properties include atomicity, consistency, isolation, and durability. Atomicity refers to a transaction's change to a state of an overall system happening all at once or not at all. Consistency refers to a transaction being a correct transformation of the system state, and essentially means that the transaction is a correct program. Although transactions execute concurrently, isolation facilitates that transactions appear to execute before or after another transaction, because intermediate states of transactions are not visible to other transactions until the transaction commits (e.g., the data is locked during execution). Durability refers to once a transaction completes successfully (commits), its activities or its changes to the state become permanent and survive failures.
An ACID transaction locks database information for the duration of the transaction. However, there are other types of business workflow transactions which have significantly longer durations and which can occupy system resources for an unacceptably long time. Such transactions often are called long running transactions. Long running business processes or transactions require a different and somewhat looser notion of transaction (often called a long-running transaction) in which individuals can be atomic database transactions but if the overall long-running transaction fails or is cancelled for business or technical reasons, there is no automatic rollback and the partial work completed during its progress must be compensated for as best as possible.
For instance the planning and fulfillment of a travel itinerary can be viewed as a long running transaction in which individual service reservation actions can use atomic transactions at service providers. In case the itinerary is cancelled the reservation transactions must be compensated for by cancellation transactions, and the corresponding payment transactions must be compensated accordingly as well. For atomic transactions in databases the databases and transaction coordinator(s) are aware of the uncommitted updates, the order in which they must be reversed, and are in full control of such reversal. In the case of long-running transactions, the compensation process is custom and must be programmed explicitly in conjunction with error-handling behavior.